/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package gmovil_jpa.entidades;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author castlerock
 */
@Entity
@Table(name = "modelo")
@NamedQueries({
    @NamedQuery(name = "Modelo.findAll", query = "SELECT m FROM Modelo m"),
    @NamedQuery(name = "Modelo.findByIdModelo", query = "SELECT m FROM Modelo m WHERE m.idModelo = :idModelo"),
    @NamedQuery(name = "Modelo.findByModelo", query = "SELECT m FROM Modelo m WHERE m.modelo = :modelo"),
    @NamedQuery(name = "Modelo.findByNombreComercial", query = "SELECT m FROM Modelo m WHERE m.nombreComercial = :nombreComercial"),
    @NamedQuery(name = "Modelo.findByExistenciaMinimo", query = "SELECT m FROM Modelo m WHERE m.existenciaMinimo = :existenciaMinimo"),
    @NamedQuery(name = "Modelo.findByExistenciaMaximo", query = "SELECT m FROM Modelo m WHERE m.existenciaMaximo = :existenciaMaximo"),
    @NamedQuery(name = "Modelo.findByDescontinuado", query = "SELECT m FROM Modelo m WHERE m.descontinuado = :descontinuado"),
    @NamedQuery(name = "Modelo.findByFechaCreacion", query = "SELECT m FROM Modelo m WHERE m.fechaCreacion = :fechaCreacion"),
    @NamedQuery(name = "Modelo.findByFechaModificacion", query = "SELECT m FROM Modelo m WHERE m.fechaModificacion = :fechaModificacion"),
    @NamedQuery(name = "Modelo.findByObservacion", query = "SELECT m FROM Modelo m WHERE m.observacion = :observacion")})
public class Modelo implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "id_modelo")
    private Integer idModelo;
    @Basic(optional = false)
    @Column(name = "modelo")
    private String modelo;
    @Column(name = "nombre_comercial")
    private String nombreComercial;
    @Basic(optional = false)
    @Column(name = "existencia_minimo")
    private int existenciaMinimo;
    @Basic(optional = false)
    @Column(name = "existencia_maximo")
    private int existenciaMaximo;
    @Basic(optional = false)
    @Column(name = "descontinuado")
    private boolean descontinuado;
    @Basic(optional = false)
    @Column(name = "fecha_creacion")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaCreacion;
    @Basic(optional = true)
    @Column(name = "fecha_modificacion")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaModificacion;
    @Column(name = "observacion")
    private String observacion;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "modelo")
    private List<DetalleRequerimientoCompra> detalleRequerimientoCompraList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "modelo")
    private List<ModeloPlan> modeloPlanList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "modelo")
    private List<Articulo> articuloList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "modelo")
    private List<DetalleOrdenCompra> detalleOrdenCompraList;
    @JoinColumn(name = "usuario_modificador", referencedColumnName = "id_usuario")
    @ManyToOne
    private Usuario usuario;
    @JoinColumn(name = "usuario_creador", referencedColumnName = "id_usuario")
    @ManyToOne(optional = false)
    private Usuario usuario1;
    @JoinColumn(name = "fid_sistema_operativo", referencedColumnName = "id_sistema_operativo")
    @ManyToOne
    private SistemaOperativo sistemaOperativo;
    @JoinColumn(name = "fid_gama_equipo", referencedColumnName = "id_gama_equipo")
    @ManyToOne(optional = false)
    private GamaEquipo gamaEquipo;
    @JoinColumn(name = "fid_tipo_articulo", referencedColumnName = "id_tipo_articulo")
    @ManyToOne(optional = false)
    private TipoArticulo tipoArticulo;
    @JoinColumn(name = "fid_marca", referencedColumnName = "id_marca")
    @ManyToOne(optional = false)
    private Marca marca;

    public Modelo() {
    }

    public Modelo(Integer idModelo) {
        this.idModelo = idModelo;
    }

    public Modelo(Integer idModelo, String modelo, int existenciaMinimo, int existenciaMaximo, boolean descontinuado, Date fechaCreacion, Date fechaModificacion) {
        this.idModelo = idModelo;
        this.modelo = modelo;
        this.existenciaMinimo = existenciaMinimo;
        this.existenciaMaximo = existenciaMaximo;
        this.descontinuado = descontinuado;
        this.fechaCreacion = fechaCreacion;
        this.fechaModificacion = fechaModificacion;
    }

    public Integer getIdModelo() {
        return idModelo;
    }

    public void setIdModelo(Integer idModelo) {
        this.idModelo = idModelo;
    }

    public String getModelo() {
        return modelo;
    }

    public void setModelo(String modelo) {
        this.modelo = modelo;
    }

    public String getNombreComercial() {
        return nombreComercial;
    }

    public void setNombreComercial(String nombreComercial) {
        this.nombreComercial = nombreComercial;
    }

    public int getExistenciaMinimo() {
        return existenciaMinimo;
    }

    public void setExistenciaMinimo(int existenciaMinimo) {
        this.existenciaMinimo = existenciaMinimo;
    }

    public int getExistenciaMaximo() {
        return existenciaMaximo;
    }

    public void setExistenciaMaximo(int existenciaMaximo) {
        this.existenciaMaximo = existenciaMaximo;
    }

    public boolean getDescontinuado() {
        return descontinuado;
    }

    public void setDescontinuado(boolean descontinuado) {
        this.descontinuado = descontinuado;
    }

    public Date getFechaCreacion() {
        return fechaCreacion;
    }

    public void setFechaCreacion(Date fechaCreacion) {
        this.fechaCreacion = fechaCreacion;
    }

    public Date getFechaModificacion() {
        return fechaModificacion;
    }

    public void setFechaModificacion(Date fechaModificacion) {
        this.fechaModificacion = fechaModificacion;
    }

    public String getObservacion() {
        return observacion;
    }

    public void setObservacion(String observacion) {
        this.observacion = observacion;
    }

    public List<DetalleRequerimientoCompra> getDetalleRequerimientoCompraList() {
        return detalleRequerimientoCompraList;
    }

    public void setDetalleRequerimientoCompraList(List<DetalleRequerimientoCompra> detalleRequerimientoCompraList) {
        this.detalleRequerimientoCompraList = detalleRequerimientoCompraList;
    }

    public List<ModeloPlan> getModeloPlanList() {
        return modeloPlanList;
    }

    public void setModeloPlanList(List<ModeloPlan> modeloPlanList) {
        this.modeloPlanList = modeloPlanList;
    }

    public List<Articulo> getArticuloList() {
        return articuloList;
    }

    public void setArticuloList(List<Articulo> articuloList) {
        this.articuloList = articuloList;
    }

    public List<DetalleOrdenCompra> getDetalleOrdenCompraList() {
        return detalleOrdenCompraList;
    }

    public void setDetalleOrdenCompraList(List<DetalleOrdenCompra> detalleOrdenCompraList) {
        this.detalleOrdenCompraList = detalleOrdenCompraList;
    }

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

    public Usuario getUsuario1() {
        return usuario1;
    }

    public void setUsuario1(Usuario usuario1) {
        this.usuario1 = usuario1;
    }

    public SistemaOperativo getSistemaOperativo() {
        return sistemaOperativo;
    }

    public void setSistemaOperativo(SistemaOperativo sistemaOperativo) {
        this.sistemaOperativo = sistemaOperativo;
    }

    public GamaEquipo getGamaEquipo() {
        return gamaEquipo;
    }

    public void setGamaEquipo(GamaEquipo gamaEquipo) {
        this.gamaEquipo = gamaEquipo;
    }

    public TipoArticulo getTipoArticulo() {
        return tipoArticulo;
    }

    public void setTipoArticulo(TipoArticulo tipoArticulo) {
        this.tipoArticulo = tipoArticulo;
    }

    public Marca getMarca() {
        return marca;
    }

    public void setMarca(Marca marca) {
        this.marca = marca;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idModelo != null ? idModelo.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Modelo)) {
            return false;
        }
        Modelo other = (Modelo) object;
        if ((this.idModelo == null && other.idModelo != null) || (this.idModelo != null && !this.idModelo.equals(other.idModelo))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "gmovil_jpa.entidades.Modelo[idModelo=" + idModelo + "]";
    }

}
